/*
 * Copyright (c) 2025 Hunan Talkweb Cloud Innovation Technology Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

export interface CapacitorBuildConfig {
  // SDK versions
  compatibleSdkVersion: string;
  targetSdkVersion: string;
  buildToolsVersion: string;
  
  // Dependencies versions
  ohosVersion: string;
  arkuiVersion: string;
  
  // Build settings
  enableObfuscation: boolean;
  enableMinification: boolean;
  enableTreeShaking: boolean;
  
  // Signing configuration
  enableSigning: boolean;
  keystorePath?: string;
  keystorePassword?: string;
  keyAlias?: string;
  keyPassword?: string;
  
  // Output configuration
  outputPath: string;
  outputName: string;
  
  // Debug settings
  enableDebugging: boolean;
  enableSourceMaps: boolean;
}

export const capacitorBuildConfig: CapacitorBuildConfig = {
  // SDK versions
  compatibleSdkVersion: "5.0.0(12)",
  targetSdkVersion: "5.0.0(12)",
  buildToolsVersion: "5.0.0(12)",
  
  // Dependencies versions
  ohosVersion: "5.0.0(12)",
  arkuiVersion: "5.0.0(12)",
  
  // Build settings
  enableObfuscation: false,
  enableMinification: true,
  enableTreeShaking: true,
  
  // Signing configuration
  enableSigning: false,
  
  // Output configuration
  outputPath: "./build",
  outputName: "entry-default-signed.hap",
  
  // Debug settings
  enableDebugging: true,
  enableSourceMaps: true
};

// Build utilities
export class CapacitorBuildUtils {
  static isDebugBuild(): boolean {
    return process.env.NODE_ENV === 'development';
  }
  
  static isReleaseBuild(): boolean {
    return process.env.NODE_ENV === 'production';
  }
  
  static getBuildVariant(): string {
    return this.isDebugBuild() ? 'debug' : 'release';
  }
  
  static getOutputPath(): string {
    const variant = this.getBuildVariant();
    return `${capacitorBuildConfig.outputPath}/${variant}`;
  }
  
  static shouldEnableObfuscation(): boolean {
    return this.isReleaseBuild() && capacitorBuildConfig.enableObfuscation;
  }
  
  static shouldEnableMinification(): boolean {
    return capacitorBuildConfig.enableMinification;
  }
}